using callback = void (*)(void *args);

class Task {
public:
    Task() {
        args = nullptr;
        function = nullptr;
    }

    virtual ~Task() = default;

    Task(void *args, callback function): args(args), function(function) {}

public:
    void *args;

    callback function;
};